package com.easy.controller;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.easy.bean.Product;
import com.easy.bean.ProductComment;
import com.easy.common.CommonResult;
import com.easy.dao.ICommentDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/comment")
public class CommentController {
    @Autowired
    private ICommentDao iCommentDao;

    // 查询评论 根据商品id
    @GetMapping("/product")
    public CommonResult getCommentId(@RequestParam Integer productid) {
        // 创建查询条件，查询指定商品的主评论（parentId 为 0 或 null）
        QueryWrapper<ProductComment> wrapper = new QueryWrapper<>();
        wrapper.eq("product_id", productid)
                .eq("parent_id", 0)
                .eq("is_del", 0)
                .orderByDesc("date");  // 按时间倒序排列主评论

        List<ProductComment> list = iCommentDao.selectList(wrapper);

        return CommonResult.success(list, list.size());
    }

    // 查看评论的回复评论
    @GetMapping("/reply")
    public CommonResult getReplyCommentId(@RequestParam Integer id){
        QueryWrapper<ProductComment> wrapper = new QueryWrapper<>();
        wrapper.eq("parent_id",id)
                .eq("is_del",0)
                .orderByDesc("date");  // 按时间倒序排列主评论
        List<ProductComment> list = iCommentDao.selectList(wrapper);
        return CommonResult.success(list,list.size());
    }

    // 查询商品评论，并同时查看每条评论的回复评论
    @GetMapping("/comments")
    public CommonResult getCommentsWithReplies(@RequestParam Integer productid) {
        // 创建查询条件，查询指定商品的主评论（parentId 为 0）
        QueryWrapper<ProductComment> wrapper = new QueryWrapper<>();
        wrapper.eq("product_id", productid)
                .eq("parent_id", 0)  // 主评论的 parent_id 为 0
                .eq("is_del", 0)  // 只查询未删除的评论
                .orderByDesc("date");  // 按时间倒序排列主评论

        // 查询主评论列表
        List<ProductComment> commentList = iCommentDao.selectList(wrapper);

        // 查询每条主评论的回复
        for (ProductComment comment : commentList) {
            QueryWrapper<ProductComment> replyWrapper = new QueryWrapper<>();
            replyWrapper.eq("parent_id", comment.getId())  // 获取该主评论的回复
                    .eq("is_del", 0)  // 只查询未删除的回复
                    .orderByAsc("date");  // 按时间正序排列回复

            // 查询并设置主评论的回复列表
            List<ProductComment> replies = iCommentDao.selectList(replyWrapper);
            comment.setReplies(replies);
        }

        // 返回结果
        return CommonResult.success(commentList, commentList.size());
    }

    // 删除
    @PutMapping("/isdel")
    public CommonResult isDelProduct(@RequestParam int id) {
        ProductComment comment = new ProductComment();
        comment.setId(id);
        comment.setIsDel(1);

        int count = iCommentDao.updateById(comment);
        if (count > 0) {
            return CommonResult.success(count);
        } else {
            return CommonResult.fail();
        }
    }

    @PostMapping("/add")
    public CommonResult addProduct(@RequestBody ProductComment comment) {
        int result = iCommentDao.insert(comment);
        if (result > 0) {
            return CommonResult.success();
        } else {
            return CommonResult.fail();
        }
    }


}
